﻿/*******************************************************************************
 * AAEngine
 * Copyright (c) 2010 Mike Jarosch
 *
 * Original source PushButton Engine:
 * Copyright (C) 2009 PushButton Labs, LLC
 * For more information see http://www.pushbuttonengine.com
 *
 * This file is licensed under the terms of the MIT license, which is included
 * in the "MIT License.txt" file at the root directory of this SDK.
 ******************************************************************************/

using System;

namespace AAEngine.Engine.Core
{
    /// <summary>
    /// An object which will be called back at a specific time. This interface     
    /// contains all the storage needed for the queueing which the ProcessManager     
    /// performs, so that the queue has zero memory allocation overhead.
    /// </summary>
    /// <seealso cref="ThinkingComponent"/>
    public interface IQueuedObject : IPrioritizable
    {
        /// <summary>
        /// Time (in milliseconds) at which to process this object.
        /// </summary>
        float NextThinkTime { get; }

        /// <summary>
        /// Callback to call at the NextThinkTime
        /// </summary>
        Action NextThinkCallback { get; }
    }
}
